1 module hip.hipaudio.backend.avaudio.source;
2 
3 version(iOS):
4 import avaudiosourcenode;
5 import avaudioplayernode;
6 import avaudiosinknode;
7 import avaudioionode;
8 import hip.hipaudio.backend.avaudio.clip;
9 import hip.error.handler;
10 import hip.hipaudio.backend.avaudio.player;
11 import hip.hipaudio.audiosource;
12 
13 class HipAVAudioSource : HipAudioSource
14 {
15     AVAudioSinkNode sink;
16     AVAudioPlayerNode player;
17     AVAudioPCMBuffer buffer;
18 
19     protected bool isClipDirty = true;
20 
21 
22     this(HipAVAudioPlayer player)
23     {
24         this.player = player.playerNode;
25     }
26     alias clip = HipAudioSource.clip;
27 
28 
29     override IHipAudioClip clip(IHipAudioClip newClip)
30     {
31         if(newClip != clip)
32             isClipDirty = true;
33         super.clip(newClip);
34         return newClip;
35     }
36 
37     alias loop = HipAudioSource.loop;
38     override bool loop(bool value)
39     {
40         bool ret = super.loop(value);
41         return ret;
42     }
43 
44     
45         
46     override bool play()
47     {
48         if(isPlaying)
49         {
50         }
51         AVAudioPCMBuffer b = getBufferFromAPI(clip).avaudio;
52         player.scheduleBuffer(b);
53         player.play();
54         return true;
55     }
56     override bool stop()
57     {
58         player.stop();
59         isPlaying = false;
60         return false;
61     }
62     override bool pause()
63     {
64         player.pause();
65         isPaused = true;
66         return false;
67     }
68     override bool play_streamed() => false;
69     
70 
71     ~this()
72     {
73         
74     }
75 }